package com.syni.mdd.sjb.common.component.utils.common.config;

import com.fasterxml.jackson.core.JsonGenerator;
import com.fasterxml.jackson.databind.JsonSerializer;
import com.fasterxml.jackson.databind.SerializerProvider;

import java.io.IOException;
import java.time.LocalDateTime;
import java.time.ZoneOffset;

/**
 * 由于 LocalDateTime 类型在转换 JSON 的时候，并不能被转换为字符串，使用 @JsonFormat 只能转换为指定的 pattern 类型，因此我们需要自定义一个序列化执行器
 * LocalDateTime 序列化（将 LocalDateTime类型 转换为 时间戳 返回给前端 ）
 *
 * @author Chimm Huang
 * @date 2020/3/7
 */
public class CustomLocalDateTimeSerializer extends JsonSerializer<LocalDateTime> {

    public CustomLocalDateTimeSerializer() {
    }

    @Override
    public void serialize(LocalDateTime value, JsonGenerator g, SerializerProvider provider) throws IOException {
        if (value != null) {
            //将localDateTime转换为中国区（+8）时间戳。
            g.writeNumber(String.valueOf(value.toInstant(ZoneOffset.ofHours(8)).toEpochMilli()));
        }else {
            g.writeNumber(0);
        }
    }
}
